In today's data processing environment, it is often desirable to maintain more than one copy of data. Maintaining multiple copies of data increases the availability of the data, and decreases the possibility that data will be lost due to memory failure, disk failure, or other hardware problem.
One method used to maintain multiple copies of data is known as mirroring. Mirroring is a form of RAID (Redundant Array of Independent Disks), and is often referred to as RAID-1. Mirroring is implemented by storing two or more copies of data on two or more different disks. Data may be read from any of the disks on which it is stored, so long as the disk is available.
In a typical information handling system, each fixed-disk drive is referred to as a physical volume, and has a unique name. Each physical volume in use belongs to a volume group. The physical volumes within a volume group are divided into physical partitions of the same size. Within each volume group, one or more logical volumes may be defined. Data on a logical volume appears to be contiguous to a user, but is usually discontiguous on the physical volume. Each logical volume is divided into one or more logical partitions, where each logical partition corresponds to one or more physical partitions. To implement mirroring, additional physical partitions are used to store the additional copies of each logical partition.
At times, a portion of a disk (i.e. one or more blocks) may become unavailable for use. Data stored at the unavailable locations on the disk can not be read. It is not desirable to discard an entire disk because a small portion of the disk is unavailable. Thus, many I/O systems utilize relocation in order to continue using a disk with some unavailable blocks. If an I/O request (i.e. a read or write request) is directed to an unavailable location, it is mapped to a different location. The mapping increases the amount of time it takes to perform I/O, and if a significant amount of mapping needs to be performed, system performance may degrade.
Consequently, it would be desirable to have a system and method for decreasing the amount of time it takes to perform I/O operations in an information handling system. It would also be desirable to minimize the performance impact caused by unavailable blocks on a physical volume.